using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using TTQT.TTQT_Code;
using System.IO.Compression; 

	/// <summary>
	/// Summary description for Global.
	/// </summary>
	public class Global : System.Web.HttpApplication
	{
	    public Global()
	    {
	        InitializeComponent();
	    }

	    private void InitializeComponent()
	    {
	        this.PostReleaseRequestState +=
	            new EventHandler(Global_PostReleaseRequestState);
	    }

	    private void Global_PostReleaseRequestState(
	        object sender, EventArgs e)
	    {
	        string contentType = Response.ContentType;

	        if (contentType == "text/html" ||
	            contentType == "text/css" ||
	            contentType == "application/x-javascript" ||
	            contentType == "text/javascript")
	        {
	            Response.Cache.VaryByHeaders["Accept-Encoding"] = true;

	            string acceptEncoding =
	                Request.Headers["Accept-Encoding"];

	            if (acceptEncoding != null)
	            {
	                if (acceptEncoding.Contains("gzip"))
	                {
	                    Response.Filter = new GZipStream(
	                        Response.Filter, CompressionMode.Compress);
	                    Response.AppendHeader(
	                        "Content-Encoding", "gzip");
	                }
	                else if (acceptEncoding.Contains("deflate"))
	                {
	                    Response.Filter = new DeflateStream(
	                        Response.Filter, CompressionMode.Compress);
	                    Response.AppendHeader(
	                        "Content-Encoding", "deflate");
	                }
	            }
	        }
	    }	
	}

